import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * 任务调度
 * Created by brss on 2018/3/25.
 */
public class Shedule {
    private static long start;

    private static ScheduledExecutorService executorService = Executors.newScheduledThreadPool(10);

    public static void main(String[] args) {
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println(System.currentTimeMillis()-start);
                try{
                    Thread.sleep(3000);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        };

        TimerTask task1 = new TimerTask() {
            @Override
            public void run() {
                System.out.println(System.currentTimeMillis()-start);
            }
        };
        Timer timer = new Timer();   //Timer实际上是一个线程在跑，所以输出是如下结果
        start = System.currentTimeMillis();
//        timer.schedule(task,1000);  //输出1000
//        timer.schedule(task1,3000);//输出4000
        //实际上，就是相当于：等了1s，task执行完后，继续等3s，然后task1才执行。
        //也就是说，任务之间有前后干扰的，如果第一个任务出现了异常挂掉的，则后面的任务也不会执行了。所以Timer是不常用的


        executorService.schedule(task,1000, TimeUnit.MILLISECONDS);//输出1002
        executorService.schedule(task1,3000, TimeUnit.MILLISECONDS);//输出3002
        //相当于上面两个task是同时开始的。多个线程并行执行的。


    }
}
